Thema: Expanding Horizons

Wertvolle Erkenntnisse und Optimierungspotenziale mit einem Code Review erzielen

Das Thema Vortrags sind Code Reviews. Dabei geht es nicht um integrierte Code Reviews innerhalb eines Entwicklungsprojektes, die mit Hilfe eines in den Build-Prozess eingearbeiteten statischen Analyse-Tools durchgeführt werden, sondern um dedizierte Aufträge zur Prüfung von Applikationen.

Ein Code Review ist die Bewertung der Machart einer Anwendung auf Quellcodebasis. Es wird eine technische Bewertung des Quellcodes und der Software-Architektur vorgenommen.
Der Quellcode wird sowohl von erfahrenen Entwicklern als auch mit der Hilfe diverser Analyse-Tools systematisch untersucht. Das Regelwerk zur Untersuchung wird dabei im Vorfeld des Projektes festgelegt.
Auf Basis der Kennzahlen und manueller Analyseergebnisse können am Ende des Projektes Handlungsempfehlungen zum weiteren Umgang mit der Anwendung gegeben werden.

Positiver Aspekt eines Code Reviews
Ein Code Review dient zur Qualitätssicherung und Risikominimierung in einem Softwareentwicklungsprojekt. Code Reviews erleichtern durch das Aufzeigen von Verbesserungsmaßnahmen der inneren Struktur einer Software eine Betriebskostenabschätzung in Bezug auf Wartbarkeit und Weiterentwicklung, welche ansonsten oft von Unsicherheit geprägt ist.

Zudem wird verhindert, dass ungünstige Betriebsszenarien gewählt werden, die nicht auf die  Architektur der Software zugeschnitten sind.
Dazu kann die Anwendung beispielsweise im Hinblick auf Skalierbarkeit, Verteilbarkeit und Containerisierbarkeit analysiert werden. Mögliche Lizenzverletzungen werden bereits im Vorfeld entdeckt und verhindert, wodurch das Risiko rechtlicher Konsequenzen minimiert wird.

Die Analyse ist in eine statische und eine manuelle Analyse aufgeteilt. Die statische Code-Analyse wird mittels statischer Analyse-Tools durchgeführt, welche anhand verschiedener Software-Metriken den Quellcode hinsichtlich Coding-Standards und Best Practices untersucht.
Bei der manuellen Analyse erfolgt eine Bewertung des Quellcodes und der Machart der Applikation von Softwareexperten. Neben dem Code-Stil und Architektur werden unter anderem die verwendeten Technologien und Bibliotheken hinsichtlich ihrer Aktualität analysiert.
Zusätzlich können in Abstimmung mit dem Auftraggeber noch flexibel Schwerpunkte für die erweiterte Analyse gesetzt werden.
Dazu eignen sich beispielsweise folgende Themen:

  • Prüfung von im Quellcode umgesetzten Sicherheitsmaßnahmen: Analyse der im Quellcode getroffenen Security-Maßnahmen. Hier wird beispielsweise eine Analyse auf die OWASP Top 10 Sicherheitsrisiken, wie Injections oder Cross-Site-Scripting, durchgeführt.
  • Prüfung eines Lastszenarios: Analyse von im Quellcode vorliegenden Maßnahmen, um ein Lastszenario zu simulieren (Lasttests). Außerdem kann die Applikation auf vorhandene Rollback-Strategien überprüft werden.
  • Lizenzanalyse: Prüfung auf in den Sources zu findende Lizenzen nach der Stärke ihres Copylefts und Prüfung auf ggf. vorliegende Inkompatibilitäten.
  • Architekturanalyse: Die Software wird hinsichtlich ihrer Beziehungen und Struktur analysiert und mit einem erarbeiteten oder bereits vorhandenen Zielbild abgeglichen.

Darstellung gesammelter Projekterfahrungen
Der Vortrag legt anhand von im Zeitraum der letzten 4 Jahre in unterschiedlichen Aufträgen gesammelten Erfahrungen dar, wie ein Code Review dem Auftraggeber eine Sicherheit bezüglich der tatsächlichen Qualität und eine Reduzierung des Risikos vermittelt. Die umgesetzten Projekte haben in der Regel einen Umfang von 20-60 Personentagen.
Das Team ist dabei mit Experten für die jeweiligen Bereiche und Technologien besetzt.

In einem exemplarisch vorgestellten Projekt wurde durch eine negative Empfehlung die Einführung der untersuchten Applikation auf Konzernebene verhindert, weil die Anwendung sich nicht in angedachte Betriebsszenarien im Hinblick auf Verteilbarkeit und Skalierbarkeit eingliedern ließ und die gewählte Programmiersprache nicht die Anforderungen an Long-Time-Supportzeiten erfüllen konnte.
Mit Kenntnis des gewünschten Betriebsszenarios konnte ein alternativer Architekturvorschlag entwickelt werden, auf dem eine spätere Neuentwicklung aufsetzen kann.

In einem anderen vorgestellten Fall werden Verbesserungsmaßnahmen identifiziert und die Entwicklungsfirma zur Umsetzung dieser vor Kauf und Inbetriebnahme durch den Auftraggeber verpflichtet.
Die aus dem Review begründeten Verbesserungsmaßnahmen wurden umgesetzt und einer weiteren Prüfungsiteration unterzogen.

In einer dritten Projektvorstellung wird eine weitere Ausprägung von Code Reviews gezeigt. Prüfungsobjekt ist eine große Software mit langjähriger Entwicklungshistorie. Ziel war es, den aktuellen Stand, aber auch die Wirksamkeit von Qualitätsmaßnahmen in jüngerer Zeit zu erfassen.
Zur Beurteilung der historischen Entwicklung und der Effektivität ergriffener Maßnahmen und getätigter Investitionen im Zeitverlauf wurde anhand mehrerer Versions-Stände untersucht und analysiert, wie effektiv die Maßnahmen zur Qualitätssteigerungen der Anwendung über die Jahre gewesen sind.

Das erwartet die Teilnehmer in diesem Vortrag
Bei dem Vortrag wird dargelegt, wie die unterschiedlichen positiven Ergebnisse der Code Reviews erreicht wurden, welche Risiken entfernt und welche Schlüsse aus den Ergebnissen der Reviews gezogen werden konnten.

Es wird aufgezeigt, dass ein Code Review  für alle Entwicklungsprojekte geeignet, egal in welcher Phase des  Lebenszyklus die Applikation sich befindet. Der Teilnehmer erfährt, dass Code Reviews in Abstimmung mit dem Auftraggeber auf beliebige Fragestellungen ausgerichtet werden können.

 

Rolf Hein

Rolf Hein ist Leiter des Bereichs IT-Consulting & Development und Prokurist bei der TRIOLOGY GmbH.

Er studierte Wirtschaftsinformatik in Wilhelmshaven und verfügt über 15 Jahre Berufserfahrung in den Bereichen IT-Consulting, Software Development, Qualitätssicherung sowie Erfahrungen in Branchen wie Automobil, Versicherungswesen, produzierende Industrie und Logistik.

Seine besondere Expertise liegt in der nachhaltigen, von Kundennutzen geprägten Softwareentwicklung und komplexen IT-Beratungsleistungen.

Mit seinem Team an Spezialisten betreibt er die Analyse und Definition von IT-gestützten Prozessen, das Optimieren von Anforderungs- und Entwicklungsprozessen sowie die Realisierung von Softwarelösungen für Mittelstand und Konzerne in vielen Technologieumfeldern.